<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
*/

/**
 * Classe reponsável por persistencia de dados relativo ao modelo de Usuario
 * @author Joao Pereira
 */

require_once '../negocios/UsuarioClass.php';

class UsuarioDAOClass {

    private $conn; //variável para conexao com banco de dados.

    public function  __construct() {

        $this->conn = new ConfigClass();

    }


    /**
     * Método para persistir dados de um usuário.
     * @author Joao Pereira
     * @param UsuarioClass $user Recebe um objeto Usuario e persisti os dados
     * no Banco
     */

    public function insereUsuario($user) {

        $this->conn->conecta();

        // echo $user->getNome(), "<br>" . $user->getSobrenome(), "<br>" .$user->getCpf(), "<br>" .$user->getRg(), "<br>" .$user->getDt_nascimento(), "<br>" .$user->getLogin(), "<br>" .  $user->getSenha();

        $query = "INSERT INTO usuario (nome, sobrenome, cpf, rg, dt_nascimento, login, senha, permissao, id_cargo) VALUES ('".$user->getNome()."' , '".$user->getSobrenome()."' , '".$user->getCpf()."' , '".$user->getRg()."', '".$user->getDt_nascimento()."', '".$user->getLogin()."', '".$user->getSenha()."', ".$user->getPermissao().", ".$user->getId_cargo().")";
        //$query = "INSERT INTO usuario (nome, sobrenome, cpf, rg, dt_nascimento, login, senha, id_cidade, permissao, id_cargo) VALUES ('".$nome."' , '".$sobrenome."' , '".$cpf."' , '".$rg."' , '".$dt_nascimento."' , '".$login."' , '".$senha."' , ".$id_cidade. "," .$permissao. ", ".$id_cargo." )";
        $res = pg_query($query);

        $desconecta = $this->conn->desconecta();

    }


    /**
     * Método responsável por buscar um usuário no banco de dados.
     * Caso não encontre, não retorna nada.
     * @param <String> $login
     * @return <UsuarioClass> $user
     */
    public function buscaUsuario ($login) {
        $this->conn->conecta(); // conecta BD
        $query = "SELECT * FROM usuario WHERE login = '$login'"; //Login é único no sistema
        $result = pg_query($query); //executa consulta e retorna um resource
        if(pg_num_rows($result)==0) {    //verifica se encontrou algum usuário
            #echo "Nenhum usuario encontrado com este login <br>";
            return;
        }else {
            $user = new UsuarioClass(); // instancia do usuario que sera retornado

            #$array_user = array(); //Caso seja necessário retornar vários usuários

            while($row = pg_fetch_assoc($result)) { //será executado apenas uma vez,pois existirá apenas 1 usuário
                //preenchendo instancia do usuário
                $user = new UsuarioClass();
                $user->setNome($row['nome']);
                $user->setSobrenome('sobrenome');
                $user->setCpf($row['cpf']);
                $user->setRg($row['rg']);
                $user->setDt_nascimento($row['dt_nascimento'],1);
                $user->setLogin($row['login']);
                $user->setSenha($row['senha']);
                $user->setPermissao($row['permissao']);
                $user->setId_cargo($row['id_cargo']);
                //array_push($array_user, $user);

            }
            $this->conn->desconecta(); // desconecta com BD

            //return $array_user;
            return $user;
        }//fim else

    }//fim metodo

    /**
     *
     * Método responsável por atualizar dados de um usuário.
     */
    public function atualizaUsuario ($user) {

        $this->conn->conecta();

        $query = "SELECT * FROM usuario WHERE login = '".$user->getLogin()."'";
        $result = pg_query($query);
        if(!$result) {
            echo "Nenhum usuario encontrado com este login <br>";
        } else {

            while($row = pg_fetch_assoc($result)) {

                // $query = sprintf("UPDATE usuario SET nome=%s, sobrenome=%s, cpf=%s, rg=%s, dt_nascimento=%s, senha=%s, permissao=%d, id_cargo=%d WHERE login=%s; ", $user->getNome(), $user->getSobrenome(), $user->getCpf(), $user->getRg(),$user->getDt_nascimento(), $user->getSenha(),  $user->getPermissao(), $user->getId_cargo(), $user->getLogin()  ) ;
                $query = sprintf("UPDATE usuario SET nome='".$user->getNome()."', sobrenome='".$user->getSobrenome()."', cpf='".$user->getCpf()."', rg='".$user->getRg()."', dt_nascimento='".$user->getDt_nascimento()."', senha='".$user->getSenha()."', permissao=".$user->getPermissao().", id_cargo=".$user->getId_cargo()." WHERE login='".$user->getLogin()."'; " );
                pg_query($query);
            }
        }

        $this->conn->desconecta();


    }

    /**
     *Método responsável por excluir um usuário a partir do login
     * @param <String> $login
     */
    public function deletaUsuario($login) {
        $this->conn->conecta();
        $query = "DELETE FROM usuario WHERE login= '".$login."'";
        #echo $query;
        $result = pg_query($query);
        if(!$result) {
            echo "Problema ao excluir usuario";
        }
        $this->conn->conecta();
    }

    /**
     *Método responsável por retornar id_usuario
     * @param <String> $login
     * @return <int> id_usuario
     */
    public function get_Id_usuario($login) {
        
//        $this->conn->conecta();
        $query = "SELECT id_usuario FROM usuario WHERE login= '".$login."'";
        $result = pg_query($query);
        $row = pg_fetch_object($result);
        $id_usuario = $row->id_usuario;
        //      $this->conn->desconecta();
        return $id_usuario;
    }
}


?>





